package com.gaogzhen.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gaogzhen.domain.CashRecharge;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gaogzhen.domain.CashRechargeAuditRecord;
import com.gaogzhen.model.CashParam;
import com.gaogzhen.vo.CashTradeVo;

/**
* @description ${description}
* @author Administrator
* @date 2022-11-03 11:43
* @version 1.0
*/
public interface CashRechargeService extends IService<CashRecharge>{


    /**
     * 分页查询GCN充值记录
     * @param page          分页
     * @param coinId        币种id
     * @param userId        用户id
     * @param username      用户名
     * @param mobile        手机号
     * @param status        状态
     * @param numMin        充值金额下限
     * @param numMax        充值金额上限
     * @param startTime     开始时间
     * @param endTime       截止时间
     * @return              GCN充值分页记录
     */
    Page<CashRecharge> findByPage(Page<CashRecharge> page, Long coinId, Long userId, String username, String mobile, Byte status, String numMin, String numMax, String startTime, String endTime);

    /**
     * 导出GCN充值记录csv
     * @param coinId        币种id
     * @param userId        用户id
     * @param username      用户名
     * @param mobile        手机号
     * @param status        状态
     * @param numMin        充值金额下限
     * @param numMax        充值金额上限
     * @param startTime     开始时间
     * @param endTime       截止时间
     */
    void exportCsv(Long coinId, Long userId, String username, String mobile, Byte status, String numMin, String numMax, String startTime, String endTime);

    /**
     * 充值审核
     * @param currentUserId 当前用户id
     * @param auditRecord  审核记录
     */
    void cashRechargeAudit(Long currentUserId, CashRechargeAuditRecord auditRecord);

    /**
     * 查询当前用户充值记录
     * @param userId    用户id
     * @param page      分页
     * @param status    状态
     * @return          当前用户充值记录
     */
    Page<CashRecharge> findUserCashRecharge(Long userId, Page<CashRecharge> page, Byte status);

    /**
     * GCN买入
     * @param userId        用户id
     * @param cashParam     买入信息
     * @return              交易结果
     */
    CashTradeVo buy(Long userId, CashParam cashParam);
}
